Toward Practical Application of Program Refactoring
نویسندگان
چکیده
Program refactoring—transforming a program to improve readability, structure, performance, abstraction, maintainability, or other characteristics— is not applied in practice as much as might be desired. Although there are various possible reasons why program refactoring is not so popular, one deterrent is the cost of detecting candidates for refactoring and of choosing the appropriate refactoring transformation. Another problem is that there are few quantitative evaluations of its impact to the software maintainability. It is sometimes difficult to judge whether the refactoring in question should be applied or not without knowing the effect accurately. This series of researches mainly focuses on how to support program refactoring to encourage practical applications of the technique. The first half of this thesis demonstrates the feasibility of automatically finding places in the program that are candidates for specific refactorings. The approach uses program invariants: when particular invariants hold at a program point, a specific refactoring is applicable. Since most programs lack explicit invariants, an invariant detection tool called Daikon is used to infer the required invariants. We developed an invariant pattern matcher for several common refactorings and applied it to an existing Java code base. Numerous refactorings were detected, and one of the developers of the code base assessed their efficacy. The latter half proposes a quantitative evaluation guideline to measure the maintainability enhancement effect of program refactoring. We focused on the module coupling metrics and the module cohesion metrics to evaluate the refactoring effect. Comparing the metrics before and after the refactoring, we could evaluate the degree of maintainability enhancement. As for coupling metrics, we carried out an experiment and found our method was really effective to quantify the refactoring effect and helped us to choose appropriate refactorings.
منابع مشابه
KABA - a system for refactoring Java programs
Refactoring is a well known technique to enhance various aspects of an object-oriented program. It has become very popular during recent years, as it allows to overcome deficits present in many programs. Doing refactoring by hand is almost impossible due to the size and complexity of modern software systems. Automated tools provide support for the application of refactorings, but do not give hi...
متن کاملGeneric and Domain-Specific Model Refactoring using a Model Transformation Engine
Refactoring is an essential approach toward improving the internal structure of a software system while preserving its external behavior. Traditional refactoring techniques have focused on the implementation stage, with source code as the primary artifact of the refactoring process. However, a recent trend is to apply the concepts of refactoring to higher levels of abstraction. Consequently, mo...
متن کاملThe Viewpoints of General Dentists of Rafsanjan and Kerman toward Continuing Education Program of Restorative Dentistry
Introduction: Identifying educational needs of general dentists and prioritizing them in continuing education programs are matters of necessity. This study was conducted to identify the viewpoints of general dentists concerning their educational needs, proper methods of teaching, and implementing continuing education program of restorative dentistry in Rafsanjan and Kerman. Methods: This descr...
متن کاملA Strafunski Application Letter Sen Software Engineering a Strafunski Application Letter a Strafunski Application Letter
Strafunski is a Haskell-centred software bundle for implementing language processing components — most notably program analyses and transformations. Typical application areas include program optimisation, refactoring, software metrics, software reand reverse engineering. Strafunski started out as generic programming library complemented by generative tool support to address the concern of gener...
متن کاملThe Viewpoints of Dentists toward Continuing Dental Education
Introduction: Continuing education can play an important role in improving and keeping dentists’ level of knowledge and skills. Hence, investigation on continuing education program seems to be necessary. This study was performed to assess dentists’ viewpoints about continuing education on oral medicine. Methods: This descriptive cross-sectional study was conducted on 300 dentists participating...
متن کامل